/**
 * @(#)HistoryProcessInstanceQueryForm.java Dec 28, 2009
 *   
 * Copyright  (c) 2009-2010 Wilmar IT Service,  Inc.   
 * All  rights  reserved.   
 * TODO
 */

package com.wilmar.process.entity.query;

import java.util.Arrays;
import java.util.Date;

import com.wilmar.process.enumerate.EnumProcessInstanceState;

/**
 * 历史流程实例查询表单
 * 
 * @author MaKuBEX Email:makubexnet@gmail.com
 * @version 1.0.0
 */
public class HistoryProcessInstanceQueryObject extends QueryObject {

	/**
	 * @serialField
	 */
	private static final long serialVersionUID = -7727820872772417379L;

	public static final String PROPERTY_PROCESS_DEFINITIONID = "processDefinitionId";
	public static final String PROPERTY_PROCESS_DEFINITIONKEY = "processDefinitionKey";
	public static final String PROPERTY_PROCESS_DEFINITIONINAME = "processDefinitionName";
	public static final String PROPERTY_PROCESS_INSTANCEKEY = "processInstanceKey";
	public static final String PROPERTY_PROCESS_INSTANCEID = "processInstanceId";
	public static final String PROPERTY_STATE = "state";
	public static final String PROPERTY_OUTSYSTEM = "outSystem";
	public static final String PROPERTY_TASK_INSTANCEID = "taskInstanceId";
	public static final String PROPERTY_MIN_START_TIME = "minStartTime";
	public static final String PROPERTY_MAX_START_TIME = "maxStartTime";

	private String[] processDefinitionId;
	private String[] processDefinitionKey;
	private String[] processDefinitionName;
	private String[] processInstanceKey;
	private String[] processInstanceId;
	private EnumProcessInstanceState[] state;
	private Date minStartTime;
	private Date maxStartTime;
	private String[] outSystem;
	private String[] taskInstanceId;

	public void setProcessDefinitionId(String processDefinitionId) {
		this.processDefinitionId = new String[] { processDefinitionId };
	}

	public void setProcessDefinitionKey(String processDefinitionKey) {
		this.processDefinitionKey = new String[] { processDefinitionKey };
	}

	public void setProcessDefinitionName(String processDefinitionName) {
		this.processDefinitionName = new String[] { processDefinitionName };
	}

	public void setProcessInstanceKey(String processInstanceKey) {
		this.processInstanceKey = new String[] { processInstanceKey };
	}

	public void setProcessInstanceId(String processInstanceId) {
		this.processInstanceId = new String[] { processInstanceId };
	}

	public void setOutSystem(String outSystem) {
		this.outSystem = new String[] { outSystem };
	}

	public void setTaskInstanceId(String taskInstanceId) {
		this.taskInstanceId = new String[] { taskInstanceId };
	}

	/**
	 * @return the processDefinitionId
	 */
	public String[] getProcessDefinitionId() {
		return processDefinitionId;
	}

	/**
	 * @param processDefinitionId
	 *            the processDefinitionId to set
	 */
	public void setProcessDefinitionId(String[] processDefinitionId) {
		this.processDefinitionId = processDefinitionId;
	}

	/**
	 * @return the processDefinitionKey
	 */
	public String[] getProcessDefinitionKey() {
		return processDefinitionKey;
	}

	/**
	 * @param processDefinitionKey
	 *            the processDefinitionKey to set
	 */
	public void setProcessDefinitionKey(String[] processDefinitionKey) {
		this.processDefinitionKey = processDefinitionKey;
	}

	/**
	 * @return the processDefinitionName
	 */
	public String[] getProcessDefinitionName() {
		return processDefinitionName;
	}

	/**
	 * @param processDefinitionName
	 *            the processDefinitionName to set
	 */
	public void setProcessDefinitionName(String[] processDefinitionName) {
		this.processDefinitionName = processDefinitionName;
	}

	/**
	 * @return the processInstanceKey
	 */
	public String[] getProcessInstanceKey() {
		return processInstanceKey;
	}

	/**
	 * @param processInstanceKey
	 *            the processInstanceKey to set
	 */
	public void setProcessInstanceKey(String[] processInstanceKey) {
		this.processInstanceKey = processInstanceKey;
	}

	/**
	 * @return the processInstanceId
	 */
	public String[] getProcessInstanceId() {
		return processInstanceId;
	}

	/**
	 * @param processInstanceId
	 *            the processInstanceId to set
	 */
	public void setProcessInstanceId(String[] processInstanceId) {
		this.processInstanceId = processInstanceId;
	}

	/**
	 * @return the state
	 */
	public EnumProcessInstanceState[] getState() {
		return state;
	}

	/**
	 * @param state
	 *            the state to set
	 */
	public void setState(EnumProcessInstanceState[] state) {
		this.state = state;
	}

	/**
	 * @return the minStartTime
	 */
	public Date getMinStartTime() {
		return minStartTime;
	}

	/**
	 * @param minStartTime
	 *            the minStartTime to set
	 */
	public void setMinStartTime(Date minStartTime) {
		this.minStartTime = minStartTime;
	}

	/**
	 * @return the maxStartTime
	 */
	public Date getMaxStartTime() {
		return maxStartTime;
	}

	/**
	 * @param maxStartTime
	 *            the maxStartTime to set
	 */
	public void setMaxStartTime(Date maxStartTime) {
		this.maxStartTime = maxStartTime;
	}

	/**
	 * @return the outSystem
	 */
	public String[] getOutSystem() {
		return outSystem;
	}

	/**
	 * @param outSystem
	 *            the outSystem to set
	 */
	public void setOutSystem(String[] outSystem) {
		this.outSystem = outSystem;
	}

	/**
	 * @return the taskInstanceId
	 */
	public String[] getTaskInstanceId() {
		return taskInstanceId;
	}

	/**
	 * @param taskInstanceId
	 *            the taskInstanceId to set
	 */
	public void setTaskInstanceId(String[] taskInstanceId) {
		this.taskInstanceId = taskInstanceId;
	}

	/**
	 * @see java.lang.Object#toString()
	 */
	public String toString() {
		return "HistoryProcessInstanceQueryObject [maxStartTime="
				+ maxStartTime + ", minStartTime=" + minStartTime
				+ ", outSystem=" + Arrays.toString(outSystem)
				+ ", processDefinitionId="
				+ Arrays.toString(processDefinitionId)
				+ ", processDefinitionKey="
				+ Arrays.toString(processDefinitionKey)
				+ ", processDefinitionName="
				+ Arrays.toString(processDefinitionName)
				+ ", processInstanceId=" + Arrays.toString(processInstanceId)
				+ ", processInstanceKey=" + Arrays.toString(processInstanceKey)
				+ ", state=" + Arrays.toString(state) + ", taskInstanceId="
				+ Arrays.toString(taskInstanceId) + "]";
	}

}
